import axios from "axios";
import { ElMessage } from "element-plus";
import router from "@/router";
import { useUserStore } from "@/store/user";

const baseURL = import.meta.env.VITE_BASE_URL;
// const baseURL = "http://192.168.11.128/api/admin"
// const baseURL = "http://81.70.215.99/api/admin"
// const baseURL = "http://zhongyi.caijg.icu/api/admin"

export { baseURL }

const service = axios.create({
  baseURL: baseURL,
});

// 请求拦截器
service.interceptors.request.use(
  (config) => {
    const userInfo = useUserStore().userInfo;
    
    if (userInfo) {
      config.headers["Content-Type"] = "application/json;charset=utf-8";
      config.headers["Authorization"] = `${userInfo.token}`;
    }
    return config;
  },
  (error) => {
    console.error("请求错误:", error);
    ElMessage.error(error.message || "未知错误");
    return Promise.reject(error);
  }
);

// 响应拦截器
service.interceptors.response.use(
  (response) => {
    const res = response.data;
    if (res.status == 200) {
      return res;
    } 
    else if (res.status == 401) {
      // 提示用户登录过期
      ElMessage.error("登录过期，请重新登录");
      // 清除浏览器缓存的 userInfo（token）
      useUserStore().removeUserInfo();
      router.push("/login");
    }
    else {
      ElMessage.error(res.msg || "请求失败");
      // 传递错误信息给调用者（用于catch里面回滚）
      return Promise.reject(new Error(res.msg || "请求失败"));
    }
  },
  (error) => {
    ElMessage.error(error.message || "未知错误");
    // 传递错误信息给调用者（用于catch里面回滚）
    return Promise.reject(error);
  }
);

export default service;